package com.fastloan.mgt.daily.service;

import com.fastloan.mgt.daily.model.WCustomerManagerDaily;
import com.fastloan.mgt.daily.model.WCustomerManagerDailyCommit;
import com.fastloan.mgt.daily.model.vo.WCustomerManagerDailyVo;
import com.fastloan.utils.excelutil.exception.ExpertExcelException;
import com.kawins.base.BaseService;
import com.kawins.result.ResultTo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * @author yanwe
 *         createTime 2017-08-2017/8/16 10:47
 */
public interface WCustomerManagerDailyService extends BaseService<WCustomerManagerDaily> {

    /**
     * 提交日报
     *
     * @param dailyCommitId 提交记录id
     * @param remark 备注
     * @return 结果
     */
    boolean commitDaily(Integer dailyCommitId, String remark);

    /**
     * 导出日报列表
     *
     * @param request request
     * @param response response
     */
    void outPutExcel(HttpServletRequest request, HttpServletResponse response) throws ExpertExcelException;

    /**
     * 日报统计
     *
     * @return 统计
     */
    ResultTo selectDailyStatistics();

    /**
     * 客户经理日报分页
     *
     * @param map 参数
     * @return 日报列表
     */
    List<WCustomerManagerDailyCommit> selectCustomerManagerDailyList(Map<String, Object> map);

    /**
     * 获得客户经理日报
     *
     * @param customerManagerId 客户经理
     * @param dateTime 日期
     * @return 日报
     */
    WCustomerManagerDailyVo getDaily(String customerManagerId, LocalDateTime dateTime);

    /**
     * 获得客户经理日报
     *
     * @param dailyCommitId 提交记录id
     * @return 日报
     */
    WCustomerManagerDailyVo getDaily(Integer dailyCommitId);

    /**
     * 添加客户经理日报
     *
     * @param customerManagerDaily 客户经理日报
     * @return 结果
     */
    ResultTo addDaily(WCustomerManagerDaily customerManagerDaily);

    /**
     * 更新客户经理日报
     *
     * @param customerManagerDaily 客户经理日报
     * @return 结果
     */
    ResultTo updateDaily(WCustomerManagerDaily customerManagerDaily);

    /**
     * 删除日报
     *
     * @param dailyId 日报id
     * @return 结果
     */
    ResultTo deleteDaily(Integer dailyId);

    /**
     * 检查是否可以提交
     *
     * @param customerManagerId 客户经理id
     * @return true 可以 false 不能
     */
    boolean checkCommit(String customerManagerId);

    void batchInsertDailyCommit();

    boolean addCustomerManagerDailyCommit(String userId);
}
